home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
parallel
/
maplist
< prev
next >
Wrap
Text File
|
1992-04-11
|
1KB
|
49 lines
map_list(Input_list,Machines):-
start_evaluators(Machines),
map_each_element(Input_list,Output_list),
send_request(writeln(Output_list)),
stop_evaluators(Machines).
map_each_element([],[]).
map_each_element([H|T],[HR|TR]):-
start_evaluation(H),
map_each_element(T,TR),
rd(evaluated(H,HR)).
start_evaluation(Value):-
rdp(evaluated(Value,_)),
send_request(write(evaluated_)),
send_request(writeln(Value)),
!.
start_evaluation(Value):-
rdp(evaluate(Value)),
send_request(write(waiting_for_evaluation_)),
send_request(writeln(Value)),
!.
start_evaluation(Value):-
rdp(being_evaluated(Value)),
send_request(write(being_evaluated_)),
send_request(writeln(Value)),
!.
start_evaluation(Value):-
send_request(write(to_evaluate_)),
send_request(writeln(Value)),
out(evaluate(Value)).
start_evaluators([]).
start_evaluators([F|R]):-
eval(F,fibonacci,poll_requests(fibonacci)),
start_evaluators(R).
stop_evaluators([]).
stop_evaluators([_|R]):-
out(evaluate(halt)),
stop_evaluators(R).